/**
 * 提取文件中的中文内容
 * @param {string} content - 文件内容
 * @returns {Array} 包含所有中文内容的数组
 */
function extractChinese(content) {
  // 中文正则表达式，匹配中文字符、中文标点符号
  const chineseRegex = /[\u4e00-\u9fa5]+[^\s]*[\u4e00-\u9fa5]+|[\u4e00-\u9fa5]+/g;
  
  // 使用正则表达式匹配所有中文内容
  const matches = content.match(chineseRegex);
  
  // 如果有匹配结果，去除重复项并返回数组
  if (matches) {
    // 去除重复项并返回
    return [...new Set(matches)];
  }
  
  // 如果没有匹配到中文，返回空数组
  return [];
}

/**
 * 从文件路径提取中文内容
 * @param {string} filePath - 文件路径
 * @returns {Promise<Array>} 包含所有中文内容的数组
 */
async function extractChineseFromFile(filePath) {
  const fs = await import('fs').then(module => module.promises);
  
  try {
    const content = await fs.readFile(filePath, 'utf-8');
    return extractChinese(content);
  } catch (error) {
    console.error(`读取文件 ${filePath} 时出错:`, error);
    return [];
  }
}

/**
 * 从多个文件中提取中文内容
 * @param {Array<string>} filePaths - 文件路径数组
 * @returns {Promise<Array>} 包含所有中文内容的数组
 */
async function extractChineseFromFiles(filePaths) {
  const allChinese = [];
  
  for (const filePath of filePaths) {
    try {
      const chinese = await extractChineseFromFile(filePath);
      allChinese.push(...chinese);
    } catch (error) {
      console.error(`处理文件 ${filePath} 时出错:`, error);
    }
  }
  
  return allChinese;
}

export { extractChinese, extractChineseFromFile, extractChineseFromFiles };